/* Mon Plugin de notation */
(function($) {
$.fn.mynotation = function(options) {

	//On définit les options en JSON grâce à $.extend
	options = $.extend({
			readonly : false, 
			note : '0',
			backingvalue : null,
			nbstars : '5',
			color: 'teal',
			size: '22px'
		}, options);
		
	if (this.length == 0) 
	{
		return this;
	}
	
	var notation = $(this);
	
	var star = "<a class='icon-star-empty' style='color:"+options.color+";font-size:"+options.size+";margin-left:2px;'href='#'></a>";
	//On crée les stars
	for(var i=0;i<options.nbstars;i++)
	{
		notation.append(star);
	}
	
	//Si on est en readyonly=false
	if(options.readonly == false)
	{
		//Si on quit la div on vide les étoiles
		notation.mouseleave(function()
		{
			notation.find('.icon-star').each(function()
			{
				if(!$(this).hasClass('staractive'))
				{
					viderstar($(this));
				}
			});
		});

		$('.icon-star-empty').each(function()
		{	
			$(this).hover(function()
			{
				if(!$(this).hasClass('staractive'))
				{
					remplirstar($(this));
					//On remplit également les étoiles précédente
					for(var i=0; i<$(this).index();i++)
					{
						remplirstar($(this).parent().children().eq(i));
					}
				}
			}, function(){
				if(!$(this).hasClass('staractive'))
				{
					viderstar($(this));
				}
			});
			
			$(this).live('click',function(e)
			{	
				e.preventDefault();
				
				//Si on a déja des etoiles actives on les supprime
				if($(this).parent().find('.staractive').length > 0)
				{
					$(this).parent().find('.staractive').removeClass('staractive');
				}
					
				staractive($(this));
				//On remplit également les étoiles précédente
				for(var i=0; i<$(this).index();i++)
				{
					staractive($(this).parent().children().eq(i));
				}
				
				for(var i=$(this).index()+1;i<options.nbstars;i++)
				{
					removestaractive($(this).parent().children().eq(i));
				}
				
				options.backingvalue.val($(this).index());
			});
		});
	}
	else
	{
		//Si la note est une valeur entiere
		if(isInt(options.note))
		{
			var index = options.note; 
		}
		//Si c'est un floattant
		else
		{
			var index = Math.round(options.note);
		}
		
		remplirstar(notation.children().eq(index));
		for(var i=0; i<index;i++)
		{
			remplirstar(notation.children().eq(i));
		}
		
		//En readonly on supprime les ancres
		notation.children().each(function()
		{
			$(this).live('click',function(e)
			{
				e.preventDefault();
			});
		});
	}
			
			
		
	return this.each(function() {
		
		
	}); // end each
	
	function remplirstar(star)
	{
		star.addClass('icon-star');
		star.removeClass('icon-star-empty');
	};
	
	function viderstar(star)
	{
		star.removeClass('icon-star');
		star.addClass('icon-star-empty');
	};
	
	function staractive(star)
	{
		remplirstar(star);
		star.addClass('staractive');
	};
	
	function removestaractive(star)
	{
		viderstar(star);
		star.removeClass('staractive');
	};
	
	//Fonction permettant de vérifier que la valeur est un entier
	function isInt(n) {
		return typeof n === 'number' && n % 1 == 0;
	}
};
})(jQuery);
